#ifndef PIONGRAPHICS_H
#define PIONGRAPHICS_H

#include <QtGui>

class Pion;


/**
 * @author CARON LOPEZ
 * @brief Réprésentation graphique d'un pion
 *
 */
class PionGraphics : public QObject, public QGraphicsItem
{
    Q_OBJECT
    Q_INTERFACES(QGraphicsItem)

public:
    PionGraphics(Pion *pion);
    Pion * getPion(){ return pion; }

    enum { Type = UserType + 3 };
    int type() const { return Type; }


    QRectF boundingRect() const;
    QPainterPath shape() const;
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);

private slots:
    /**
     * @brief Ajuste la position d'un pion autour
     * d'un état en fonction de sa position (index dans la list)
     * et le nombre max de pion dans la liste
     *
     * @param pos Position du pion dans la liste de pion
     * @param max Nombre d'élément dans la liste de pion
     */
    void adjust(int pos=0, int max=1);


    /**
     * @brief Met à jour la couleur du pion
     *
     */
    void updateGraphics();

protected:
    Pion *pion;

    QVariant itemChange(GraphicsItemChange change, const QVariant &value);

    void mousePressEvent(QGraphicsSceneMouseEvent *event);
    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
};

#endif // PIONGRAPHICS_H
